 package co.touchlab.stately.concurrency
import kotlin.concurrent.AtomicInt
// import kotlin.native.concurrent.AtomicInt
import kotlin.native.concurrent.freeze


// 用原子整数实现简单的自旋锁
actual class Lock actual constructor() {
  // 0: 未锁定状态, 1: 已锁定状态
  private val state = AtomicInt(0).freeze() // 冻结以支持跨线程访问

  actual fun lock() {
    // 自旋等待直到获取锁
    while (!tryLock()) {
      // 可选：添加短暂延迟减少CPU占用
      //kotlinx.cinter
      //op.Thread.sleep(1)
    }
  }

  actual fun unlock() {
    // 释放锁（将状态设为0）
    state.compareAndSet(1, 0)
  }

  actual fun tryLock(): Boolean {
    // 尝试将状态从0改为1，成功表示获取到锁
    return state.compareAndSet(0, 1)
  }
}

// 实现close扩展函数
actual inline fun Lock.close() {
  unlock()
}


